# -*- coding: UTF-8 –*-
__author__ = 'WLH'

import os
import sys
from string import Template

class UavTemplate(Template):
    """docstring for UavTemplate"""
    delimiter = '$$'

#~  Function :
#~  def IsSubString(SubStrList,Str)
#~  def GetFileList(FindPath,Ext=[]):
#~  功能:读取指定目录下特定类型的文件名列表

def GetFileList(FindPath,Ext=[]):
    '''
    #获取目录中指定的文件名
    #>>>Ext=['.h','.txt','.c'] #要求文件名称中后缀名
    #>>>FileList=GetFileList(FindPath,FlagStr) #
    '''
    import os
    FileList=[]
    FileNames=os.listdir(FindPath)
    if (len(FileNames)>0):
        for fn in FileNames:
            ext = os.path.splitext(fn)[1]
            if(ext in Ext):
                FileList.append(fn)

    #对文件名排序
    if (len(FileList)>0):
        FileList.sort()

    return FileList

def copy_file(src, dst):
    import shutil
    # check source file
    if not os.path.exists(src):
        return

    path = os.path.dirname(dst)
    # mkdir if path not exist
    if not os.path.exists(path):
        os.makedirs(path)

    shutil.copy2(src, dst)

def copy_folder(src_dir, dst_dir):
    import shutil
    # check source directory
    if not os.path.exists(src_dir):
        return

    if os.path.exists(dst_dir):
        shutil.rmtree(dst_dir)

    shutil.copytree(src_dir, dst_dir)

def get_type_size(type):
    if type == 'U8' or type == 'S8':
        return 1
    if type == 'U16' or type == 'S16':
        return 2
    if type == 'U32' or type == 'S32' or type == 'FP32':
        return 4
    if type == 'FP64':
        return 8
    print ('UNKOWN Type:' + type)
    return 0

#获取脚本文件的当前路径
def cur_file_dir():
    #获取脚本路径
    path = sys.path[0]
    #判断为脚本文件还是py2exe编译后的文件，如果是脚本文件，则返回的是脚本的目录，
    #如果是py2exe编译后的文件，则返回的是编译后的文件路径
    if os.path.isdir(path):
        return path
    elif os.path.isfile(path):
        return os.path.dirname(path)